Test automation systems are used to automatically test software-driven systems. Conventional architectures consist of a test harness, which is typically used to execute test cases specified by attributes of the test cases. The attributes are used to label classes or methods to mark which of the classes or methods should be examined for testing.
A conventional test harness examines each of the classes and/or methods, examines the attributes present, and then based on the examination of the attributes performs an action. This method of using attributes requires that the code necessary to perform an action be present in the test harness. Accordingly, it is not possible to create new kinds of test attributes without modifying the test harness. Additionally, the same code often needs to be written (or modified) for each different test harness in which the attribute is used. Likewise, adding new attributes can lead to undesirable changes in existing tests in a conventional test harness. The variety of functionality in conventional test harnesses can result in differences between the test harnesses such that a test may return different results in different test harnesses (this may also result in tests that only run properly in one test harness), which is undesirable.
In accordance with the present invention, attributes can be reused and new attributes added without requiring modifications to test harnesses in order run tests.